﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Devart.Data.PostgreSql;

namespace Sistema_financiero
{
    public partial class frm_Listado_Clientes_Garantes : Form
    {
        public string fecha_filtro;
        public string filtro_estado_prestamo;
        public int estado_prestamo;
        public string filtro_nombre_apellido_id_cliente;
        public List<Entidades.Estado_prestamo> Lista_estado_prestamo = new List<Sistema_financiero.Entidades.Estado_prestamo>();
        public frm_Listado_Clientes_Garantes()
        {
            InitializeComponent();
            dtp_Desde.Value = DateTime.Today.Date;
            dtp_Hasta.Value = dtp_Desde.Value.AddDays(1);
            dtp_Fecha.Value = DateTime.Now.Date;
            Lista_estado_prestamo = Entidades.Estado_prestamo.Obtener_Estado_prestamo();
        }

        private void gbx_Buscar_Enter(object sender, EventArgs e)
        {

        }

        private void lbl_CUIT_Click(object sender, EventArgs e)
        {

        }

        private void lbl_Num_cliente_Click(object sender, EventArgs e)
        {

        }

        private void tbx_CUIT_TextChanged(object sender, EventArgs e)
        {

        }

        private void lbl_Serie_Click(object sender, EventArgs e)
        {

        }

        private void lbl_Numero_Click(object sender, EventArgs e)
        {

        }

        private void tbx_Num_cliente_TextChanged(object sender, EventArgs e)
        {

        }

        private void tbx_Numero_TextChanged(object sender, EventArgs e)
        {

        }

        private void tbx_Serie_TextChanged(object sender, EventArgs e)
        {

        }

        private void rbtn_Pendiente_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void btn_Buscar_cliente_Click(object sender, EventArgs e)
        {
            dgv_Buscar.DataSource = null;
            string sql;
            Valores_de_busqueda();
            sql = String.Format("SELECT DISTINCT \"Cliente\".id_cliente, \"Cliente\".nombres, \"Cliente\".apellido, \"Cliente\".num_doc, \"Cliente\".fecha_nacimiento, \"Cliente\".fecha_ingreso FROM \"Cliente\", \"Prestamo\"  WHERE \"Prestamo\".id_estado_prestamo <> 4 {0} {1} {2}", fecha_filtro, filtro_estado_prestamo, filtro_nombre_apellido_id_cliente);
            PgSqlDataAdapter adpt = new PgSqlDataAdapter (sql, frm_Menu.conexion);
            DataSet dts = new DataSet();

            adpt.Fill(dts, "nombreTabla");
            dgv_Buscar.DataSource = dts.Tables["nombreTabla"];
            dgv_Buscar.AutoResizeColumns();
        }

        public void Valores_de_busqueda()
        {
            //FECHAS
            if (rbtn_Rango.Checked == true)
            {
                fecha_filtro = String.Format("AND \"Cliente\".fecha_ingreso >= '{0}' AND \"Cliente\".fecha_ingreso <= '{1}'", (dtp_Desde.Value.ToString("d")), (dtp_Hasta.Value.ToString("d")));
            }
            else
            {
                if (rbtn_Hoy.Checked == true)
                {
                    fecha_filtro = String.Format("AND \"Cliente\".fecha_ingreso = '{0}'", (dtp_Fecha.Value.ToString("d")));
                }
                else
                {
                    fecha_filtro = "";
                }
            }
            //PRESTAMOS
            if (rbtn_Pendiente.Checked == true)
            {
                foreach (Entidades.Estado_prestamo E in Lista_estado_prestamo)
                {
                    if (E.Descripcion.Contains("Pendiente"))
                    {
                        estado_prestamo = E.ID;
                        break;
                    }
                }
            }
            else
            {
                if (rbtn_Gestion_judicial.Checked == true)
                {
                    foreach (Entidades.Estado_prestamo E in Lista_estado_prestamo)
                    {
                        if (E.Descripcion.Contains("En gestion judicial"))
                        {
                            estado_prestamo = E.ID;
                            break;
                        }
                    }
                }
                else
                {
                    if (rbtn_Cancelado.Checked == true)
                    {
                        foreach (Entidades.Estado_prestamo E in Lista_estado_prestamo)
                        {
                            if (E.Descripcion.Contains("Cancelado"))
                            {
                                estado_prestamo = E.ID;
                                break;
                            }
                        }
                    }
                    else
                    {
                        estado_prestamo = -1;
                    }
                }
            }
            if (estado_prestamo == -1)
            {
                filtro_estado_prestamo = "";
            }
            else
            { 
                filtro_estado_prestamo = String.Format("AND \"Prestamo\".id_cliente = \"Cliente\".id_cliente AND \"Prestamo\".id_estado_prestamo = {0}", estado_prestamo); 
            }
            //NOMBRE - APELLIDO - ID_CLIENTE
            if (String.IsNullOrEmpty(tbx_Nombre.Text))
            {
                filtro_nombre_apellido_id_cliente = "";
            }
            else
            { 
                filtro_nombre_apellido_id_cliente = String.Format("AND lower(\"Cliente\".nombres) LIKE lower('{0}')",tbx_Nombre.Text);
            }
            if (String.IsNullOrEmpty(tbx_Apellido.Text))
            {

            }
            else
            {
                filtro_nombre_apellido_id_cliente = filtro_nombre_apellido_id_cliente + " " + String.Format("AND lower(\"Cliente\".apellido) LIKE lower('{0}')", tbx_Apellido.Text);
            }
            if (String.IsNullOrEmpty(tbx_Num_cliente.Text))
            {

            }
            else
            {
                filtro_nombre_apellido_id_cliente = filtro_nombre_apellido_id_cliente + " " + String.Format("AND \"Cliente\".id_cliente = {0}", tbx_Num_cliente.Text);
            }

        }

        private void dtp_Desde_Leave(object sender, EventArgs e)
        {
            if (rbtn_Rango.Checked == true)
            {
                Control.Textbox_restricciones.Fecha_mayor_que(dtp_Desde, dtp_Hasta, btn_Buscar_cliente);
            }
        }

        private void dtp_Hasta_Leave(object sender, EventArgs e)
        {
            if (rbtn_Rango.Checked == true)
            {
                Control.Textbox_restricciones.Fecha_mayor_que(dtp_Desde, dtp_Hasta, btn_Buscar_cliente);
            }
        }

        private void frm_Listado_Clientes_Garantes_Load(object sender, EventArgs e)
        {

        }

        private void dtp_Desde_ValueChanged(object sender, EventArgs e)
        {
            if (rbtn_Rango.Checked == true)
            {
                Control.Textbox_restricciones.Fecha_mayor_que(dtp_Desde, dtp_Hasta, btn_Buscar_cliente);
            }
        }

        private void dtp_Hasta_ValueChanged(object sender, EventArgs e)
        {
            if (rbtn_Rango.Checked == true)
            {
                Control.Textbox_restricciones.Fecha_mayor_que(dtp_Desde, dtp_Hasta, btn_Buscar_cliente);
            }
        }

        private void tbx_Num_cliente_KeyPress(object sender, KeyPressEventArgs e)
        {
            Control.Textbox_restricciones.Permitir_solo_numeros(e);
        }

        private void btn_Buscar_Click(object sender, EventArgs e)
        {
            frm_Buscar_Cliente Buscar_cliente = new frm_Buscar_Cliente();
            Buscar_cliente.ShowDialog();
            if (Buscar_cliente.Cliente_seleccionado != null)
            {
                tbx_Apellido.Text = Buscar_cliente.Cliente_seleccionado.Apellido;
                tbx_Nombre.Text = Buscar_cliente.Cliente_seleccionado.Nombres;
                tbx_Num_cliente.Text = Convert.ToString(Buscar_cliente.Cliente_seleccionado.ID);
            }
        }

        private void btn_Ver_baja_modificacion_Click(object sender, EventArgs e)
        {
            if (dgv_Buscar.RowCount != 0)
            {
                int id_cliente = Convert.ToInt32(dgv_Buscar[0, dgv_Buscar.CurrentRow.Index].Value);
                frm_Ver_Modificar_Cliente ver_modificar_cliente = new frm_Ver_Modificar_Cliente(id_cliente);
                ver_modificar_cliente.ShowDialog();

            }
            
        }
    }
}
